package API.包装类;
import java.lang.Integer;
public class integer {
    public static void main(String[] args) {
        /*
        public Integer(int value)           根据传递的正数创建一个Integer对象
        public Integer(String s)           根据传递的字符串创建一个Integer对象
        public static Integer valueOf(int value)         根据传递的正数创建一个Integer对象
        public static Integer valueOf(String s)         根据传递的字符串创建一个Integer对象
        public static Integer valueOf(String s，int radix)         根据传递的字符串创建一个Integer对象

         */
//        1.利用构造方法获取Integer的对象（JDK5以前的方式）
        Integer i1 = new Integer(1);
        Integer i2 = new Integer("1");
        System.out.println(i1);
        System.out.println(i2);

//        2.利用构造方法获取Integer的对象（JDK5以前的方式）
        Integer i3 = Integer.valueOf(123);
        Integer i4 = Integer.valueOf("123");
        Integer i5 = Integer.valueOf("123",8);//8进制状态下的123
        System.out.println(i3);
        System.out.println(i4);
        System.out.println(i5);//83，将8进制状态下的123转成10进制进行打印

//        3.两个方式获取对象的区别  (==比较的是地址值，true说明前后是同一个对象)
        Integer i6= Integer.valueOf(127);
        Integer i7= Integer.valueOf(127);
        System.out.println(i6==i7);//true(==比较的是地址值，true说明前后是同一个对象)

//        对于Integer.valueOf()来说，里面的值有范围要求（127>x>-128）返回x
//        否则就创建一个新的对象 即 new一个对象，地址值不同，结果为false 
        Integer i8=Integer.valueOf(-129);
        Integer i9=Integer.valueOf(-129);
        System.out.println(i8==i9);//false


//        因为有new关键字，在java中，每次new都代表创建了一个新的对象，所以地址值不同，结果为false
        Integer i10=new Integer(128);
        Integer i11=new Integer(128);
        System.out.println(i10==i11);//false



//        java之前包装类进行计算
//        1.将数据拆箱，变为基本数据类型
//        2.相加
//        3.将得到的结果再次相加（再次变为包装类）

        // 基本数据类型 -(转换为)->引用数据类型（装箱）
        Integer int1=new Integer(1);
        Integer int2=new Integer(2);
        // 将引用数据类型--(转换为)-> 基本数据类型
        int result=int1.intValue()+int2.intValue();
        // 将引用数据类型--(转换为)-> 基本数据类型（拆箱）
        Integer int3=new Integer(result);
        System.out.println(int3);

//        现在使用的计算方法（jdk5时提出一个机制：自动装箱，自动拆箱）
//        自动装箱：基本数据类型会自动的变为其对应的包装类
//        自动拆箱：把包装类自动变为其对应的基本数据类型

        Integer int4=10;
        Integer int5=12;
        Integer int6=int5+int4;
        System.out.println(int6);//22


    }
}
